import BN from "bn.js";
import { Address } from "web3x-es/address";
import { EventLog, TransactionReceipt } from "web3x-es/formatters";
import { Contract, ContractOptions, TxCall, TxSend, EventSubscriptionFactory } from "web3x-es/contract";
import { Eth } from "web3x-es/eth";
import abi from "./MANAAbi";
export type MintEvent = {
    to: Address;
    amount: string;
};
export type MintFinishedEvent = {};
export type PauseEvent = {};
export type UnpauseEvent = {};
export type BurnEvent = {
    burner: Address;
    value: string;
};
export type ApprovalEvent = {
    owner: Address;
    spender: Address;
    value: string;
};
export type TransferEvent = {
    from: Address;
    to: Address;
    value: string;
};
export interface MintEventLog extends EventLog<MintEvent, "Mint"> {
}
export interface MintFinishedEventLog extends EventLog<MintFinishedEvent, "MintFinished"> {
}
export interface PauseEventLog extends EventLog<PauseEvent, "Pause"> {
}
export interface UnpauseEventLog extends EventLog<UnpauseEvent, "Unpause"> {
}
export interface BurnEventLog extends EventLog<BurnEvent, "Burn"> {
}
export interface ApprovalEventLog extends EventLog<ApprovalEvent, "Approval"> {
}
export interface TransferEventLog extends EventLog<TransferEvent, "Transfer"> {
}
interface MANAEvents {
    Mint: EventSubscriptionFactory<MintEventLog>;
    MintFinished: EventSubscriptionFactory<MintFinishedEventLog>;
    Pause: EventSubscriptionFactory<PauseEventLog>;
    Unpause: EventSubscriptionFactory<UnpauseEventLog>;
    Burn: EventSubscriptionFactory<BurnEventLog>;
    Approval: EventSubscriptionFactory<ApprovalEventLog>;
    Transfer: EventSubscriptionFactory<TransferEventLog>;
}
interface MANAEventLogs {
    Mint: MintEventLog;
    MintFinished: MintFinishedEventLog;
    Pause: PauseEventLog;
    Unpause: UnpauseEventLog;
    Burn: BurnEventLog;
    Approval: ApprovalEventLog;
    Transfer: TransferEventLog;
}
interface MANATxEventLogs {
    Mint: MintEventLog[];
    MintFinished: MintFinishedEventLog[];
    Pause: PauseEventLog[];
    Unpause: UnpauseEventLog[];
    Burn: BurnEventLog[];
    Approval: ApprovalEventLog[];
    Transfer: TransferEventLog[];
}
export interface MANATransactionReceipt extends TransactionReceipt<MANATxEventLogs> {
}
interface MANAMethods {
    mintingFinished(): TxCall<boolean>;
    name(): TxCall<string>;
    approve(_spender: Address, _value: number | string | BN): TxSend<MANATransactionReceipt>;
    totalSupply(): TxCall<string>;
    transferFrom(_from: Address, _to: Address, _value: number | string | BN): TxSend<MANATransactionReceipt>;
    decimals(): TxCall<string>;
    unpause(): TxSend<MANATransactionReceipt>;
    mint(_to: Address, _amount: number | string | BN): TxSend<MANATransactionReceipt>;
    burn(_value: number | string | BN): TxSend<MANATransactionReceipt>;
    paused(): TxCall<boolean>;
    balanceOf(_owner: Address): TxCall<string>;
    finishMinting(): TxSend<MANATransactionReceipt>;
    pause(): TxSend<MANATransactionReceipt>;
    owner(): TxCall<Address>;
    symbol(): TxCall<string>;
    transfer(_to: Address, _value: number | string | BN): TxSend<MANATransactionReceipt>;
    allowance(_owner: Address, _spender: Address): TxCall<string>;
    transferOwnership(newOwner: Address): TxSend<MANATransactionReceipt>;
}
export interface MANADefinition {
    methods: MANAMethods;
    events: MANAEvents;
    eventLogs: MANAEventLogs;
}
export class MANA extends Contract<MANADefinition> {
    constructor(eth: Eth, address?: Address, options?: ContractOptions) {
        super(eth, abi, address, options);
    }
    deploy(): TxSend<MANATransactionReceipt> {
        return super.deployBytecode("0x60606040526003805460a060020a61ffff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610be5806100426000396000f300606060405236156100e05763ffffffff60e060020a60003504166305d2035b81146100e257806306fdde0314610106578063095ea7b31461019657806318160ddd146101c957806323b872dd146101eb578063313ce567146102245780633f4ba83a1461024a57806340c10f191461026e57806342966c68146102a15780635c975abb146102b657806370a08231146102da5780637d64bcb4146103085780638456cb591461032c5780638da5cb5b1461035057806395d89b411461037c578063a9059cbb1461040c578063dd62ed3e1461043f578063f2fde38b14610473575bfe5b34156100ea57fe5b6100f2610491565b604080519115158252519081900360200190f35b341561010e57fe5b6101166104a1565b60408051602080825283518183015283519192839290830191850190808383821561015c575b80518252602083111561015c57601f19909201916020918201910161013c565b505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561019e57fe5b6100f2600160a060020a03600435166024356104cf565b604080519115158252519081900360200190f35b34156101d157fe5b6101d9610574565b60408051918252519081900360200190f35b34156101f357fe5b6100f2600160a060020a036004358116906024351660443561057a565b604080519115158252519081900360200190f35b341561022c57fe5b6102346105ab565b6040805160ff9092168252519081900360200190f35b341561025257fe5b6100f26105b0565b604080519115158252519081900360200190f35b341561027657fe5b6100f2600160a060020a036004351660243561062a565b604080519115158252519081900360200190f35b34156102a957fe5b6102b46004356106fd565b005b34156102be57fe5b6100f2610723565b604080519115158252519081900360200190f35b34156102e257fe5b6101d9600160a060020a0360043516610733565b60408051918252519081900360200190f35b341561031057fe5b6100f2610752565b604080519115158252519081900360200190f35b341561033457fe5b6100f26107b8565b604080519115158252519081900360200190f35b341561035857fe5b610360610837565b60408051600160a060020a039092168252519081900360200190f35b341561038457fe5b610116610846565b60408051602080825283518183015283519192839290830191850190808383821561015c575b80518252602083111561015c57601f19909201916020918201910161013c565b505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561041457fe5b6100f2600160a060020a0360043516602435610867565b604080519115158252519081900360200190f35b341561044757fe5b6101d9600160a060020a0360043581169060243516610896565b60408051918252519081900360200190f35b341561047b57fe5b6102b4600160a060020a03600435166108c3565b005b60035460a860020a900460ff1681565b6040805180820190915260118152607860020a70446563656e7472616c616e64204d414e4102602082015281565b60008115806105015750600160a060020a03338116600090815260026020908152604080832093871683529290522054155b151561050d5760006000fd5b600160a060020a03338116600081815260026020908152604080832094881680845294825291829020869055815186815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060015b92915050565b60005481565b60035460009060a060020a900460ff16156105955760006000fd5b6105a084848461090f565b90505b5b9392505050565b601281565b60035460009033600160a060020a039081169116146105cf5760006000fd5b60035460a060020a900460ff1615156105e85760006000fd5b6003805460a060020a60ff02191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a15060015b5b5b90565b60035460009033600160a060020a039081169116146106495760006000fd5b60035460a860020a900460ff16156106615760006000fd5b600054610674908363ffffffff610a1216565b6000908155600160a060020a03841681526001602052604090205461069f908363ffffffff610a1216565b600160a060020a038416600081815260016020908152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a25060015b5b5b92915050565b60035460a060020a900460ff16156107155760006000fd5b61071e81610a2c565b5b5b50565b60035460a060020a900460ff1681565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a039081169116146107715760006000fd5b6003805460a860020a60ff02191660a860020a1790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a15060015b5b90565b60035460009033600160a060020a039081169116146107d75760006000fd5b60035460a060020a900460ff16156107ef5760006000fd5b6003805460a060020a60ff02191660a060020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a15060015b5b5b90565b600354600160a060020a031681565b604080518082019091526004815260e060020a634d414e4102602082015281565b60035460009060a060020a900460ff16156108825760006000fd5b61088c8383610ad4565b90505b5b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a039081169116146108df5760006000fd5b600160a060020a0381161561071e5760038054600160a060020a031916600160a060020a0383161790555b5b5b50565b600160a060020a038084166000908152600260209081526040808320338516845282528083205493861683526001909152812054909190610956908463ffffffff610a1216565b600160a060020a03808616600090815260016020526040808220939093559087168152205461098b908463ffffffff610b8216565b600160a060020a0386166000908152600160205260409020556109b4818463ffffffff610b8216565b600160a060020a03808716600081815260026020908152604080832033861684528252918290209490945580518781529051928816939192600080516020610b9a833981519152929181900390910190a3600191505b509392505050565b600082820183811015610a2157fe5b8091505b5092915050565b6000808211610a3b5760006000fd5b5033600160a060020a038116600090815260016020526040902054610a609083610b82565b600160a060020a03821660009081526001602052604081209190915554610a8d908363ffffffff610b8216565b600055604080518381529051600160a060020a033316917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25b5050565b600160a060020a033316600090815260016020526040812054610afd908363ffffffff610b8216565b600160a060020a033381166000908152600160205260408082209390935590851681522054610b32908363ffffffff610a1216565b600160a060020a03808516600081815260016020908152604091829020949094558051868152905191933390931692600080516020610b9a83398151915292918290030190a35060015b92915050565b600082821115610b8e57fe5b508082035b929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820f462e7242c33877d5d2f087a81cc0a589147f1cf578ce7fc53451e7ce4fb376f0029") as any;
    }
}
export var MANAAbi = abi;
